#ifndef _COLLISION_H_
#define _COLLISION_H_

#include "Bonus.h"


/** @brief File brief description
 Le fichier Collision.h contient la declaration de toutes les fonctions et procedures necessaires
 a la gestion des collisions entre les differents protagonistes (heros,ennemis et boss) ainsi qu'avec 
 les tirs des uns et des autres.Les effets de ces collisions (perte de vie ou destruction) sont elles
 gerees dans les modules correspondant au protagoniste concerne*/


/** @brief Cette fonction permet de tester le collision entre un heros et un ennemi, elle retourne
 * 0 si il y a collision et 1 sinon
 * @param [in] pheros
 * @param [in] pennemi*/
int collisionHerosEnnemi (const Heros* pheros, const Ennemi* pennemi);

/** @brief Cette fonction permet de tester le collision entre un heros et un boss, elle retourne
 * 0 si il y a collision et 1 sinon
 * @param [in] pheros
 * @param [in] pboss**/
int collisionHerosBoss (const Heros* pheros, const Boss* pboss);

/** @brief Cette fonction permet de tester le collision entre un heros et un bonus, elle retourne
 * 0 si il y a collision et 1 sinon
 * @param [in] pheros
 * @param [in] pbonus**/
int collisionHerosBonus (const Heros* pheros, const Bonus* pbonus);

/** @brief Cette fonction permet de tester le collision entre un heros et un tir, elle retourne
 * 0 si il y a collision et 1 sinon
 * @param [in] ptir
 * @param [in] pheros**/
int collisionTirHeros (const Tir* ptir, const Heros* pheros);

/** @brief Cette fonction permet de tester le collision entre un tir de l'arme principale du heros 
 * et un ennemi, elle retourne 0 si il y a collision et 1 sinon
 * @param [in] ptir
 * @param [in] pennemi**/
int collisionTirEnnemi (const Tir* ptir, const Ennemi* pennemi);

/** @brief Cette fonction permet de tester le collision entre un tir type missile et un ennemi, elle retourne
 * 0 si il y a collision et 1 sinon
 * @param [in] ptir
 * @param [in] pennemi*/
int collisionTirEnnemiS1 (const Tir* ptir, const Ennemi* pennemi);

/** @brief Cette fonction permet de tester le collision entre un tir et un boss, elle retourne
 * 0 si il y a collision et 1 sinon
 * @param [in] ptir
 * @param [in] pboss*/
int collisionTirBoss (const Tir* ptir, const Boss* pboss);

#endif
